﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TPDiseño.Clases_de_Entidad;
using TPDiseño.DTO_s;
using DAO;

namespace TPDiseño.Clases_de_Control
{
    class Gestor_Candidato{
        private DAOCandidato miDAOCandidato = DAOCandidato.Instance;
        private DAOCuestionario  miDAOCuestionario = DAOCuestionario.Instance; 

        public Candidato buscar(string tipo_doc, int nro_doc)
        {
            DAO.DAOCandidato DAOCandidato = new DAO.DAOCandidato();
            //busca en el DAO si existe el candidato y lo retorna mediante un cargar
            Candidato candidato = DAOCandidato.cargar(nro_doc, tipo_doc);
            return candidato;
        }

        public List<Candidato> buscar(string nombre, string apellido, string Ncandidato, string Nempleado)
        {

            return miDAOCandidato.cargar(nombre, apellido, Ncandidato, Nempleado);
        }

        public List<Candidato> cuestionariosActivosProceso(List<Candidato> unosCandidatos)
        {
            // Creo una lista de candidatos para almacenar los que tengan cuestionarios actibvos o en proceso
            List<Candidato> candidatosConCuestionariosActivosProceso = new List<Candidato>();
            // Apunto una lista con todos los cuestionarios para estos candidatos
            List<Cuestionario> cuestionarios = miDAOCuestionario.cargar(unosCandidatos);
            // arreglo de ides para checar que no
            List<int> agregadosIds = new List<int>();
                 

            // Recorro todos los cuestionarios de esos candidatos
            foreach (Cuestionario unCuestionario in cuestionarios)
            {
                // Si el cuestionario tiene estado Activo=1 o en Proceso=2 
                if ((unCuestionario._estado._cod_estado == 1) || (unCuestionario._estado._cod_estado == 2))
                {                    
                    // Verifico que NO este incluido en la lista de id (que no lo agregue antes)
                    if (!agregadosIds.Contains(unCuestionario._candidato._id)){
                        // Voy agregando el candidato 
                        candidatosConCuestionariosActivosProceso.Add(unCuestionario._candidato);
                        // Anoto el ide para luego chekar que no este incluido ya
                        agregadosIds.Add(unCuestionario._candidato._id);
                    }
                }
            }

            return candidatosConCuestionariosActivosProceso;
        }

    }
}
